package br.sc.senai.control.managedbeans;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.sc.senai.model.dao.Persist;
import br.sc.senai.model.entity.Locacao;
import br.sc.senai.model.exception.DAOExcption;

/**
 * 
 * @author Dhyego
 * @14/06/2013
 * @locadora-de-carros
 * @ClienteMB.java
 * @param <Locacao>
 */

@ManagedBean(name = "LocacaoMB")
@SessionScoped
public class LocacaoMB{

	
	private Persist<Locacao> daoLocacao = new Persist<Locacao>();
	private Locacao locacao = new Locacao();
	private Locacao selectLocacao;
	
	public Locacao getSelectLocacao() {
		return selectLocacao;
	}



	public void setSelectLocacao(Locacao selectLocacao) {
		this.selectLocacao = selectLocacao;
	}



	public void insert() {

			
		try {
			if (locacao.getId() != null && locacao.getId() > 0){
				daoLocacao.update(locacao);
			} else {
				daoLocacao.add(locacao);
			}
			locacao = new Locacao();
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	
	//Retorna um objeto pelo ID
	public Locacao getById(int id){
		
		Locacao loc = new Locacao();
		loc.setId(id);
		
		try {
			loc = daoLocacao.getById(loc);
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return loc;
		
	}
	
	//Retorna uma lista com todos Objetos
	public List<Locacao> loadAll() {

		List<Locacao> retorno = null;

		try {
			retorno = daoLocacao.loadAll(Locacao.class);
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retorno;
	}
	
	
	//Deleta um objeto passando o objeto inteiro.
	public boolean delete(){
		
		boolean ok = false;
		
		try {
			if (selectLocacao != null)
				daoLocacao.delete(selectLocacao);
			selectLocacao = null;
		} catch (DAOExcption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return ok;
	}

	public void redirect(Boolean pIsCadastrarNovo){
		locacao = new Locacao();
		if (!pIsCadastrarNovo){
			try {
				//daoCliente.loadBySql("From Locacao l order by dtCadastro", arg1)
				if (selectLocacao != null)
					locacao  = daoLocacao.getById(selectLocacao);
				else return;
						
			} catch (DAOExcption e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("cadastra-locacao.xhtml");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public Locacao getLocacao() {
		return locacao;
	}

	public void setLocacao(Locacao locacao) {
		this.locacao = locacao;
	}

}
